/* 每个对象都可以调用toString()方法,如果此方法在自定义对象中未被覆盖，
toString() 返回 "[object type]"，其中 type 是对象的类型 */
let user = {
  username: "Jack",
};

console.log(user.toString()); // [object Object]

/* 我们可以重写对象的toString()方法 */
function Animal(name, month) {
  this.name = name;
  this.month = month;
}

Animal.prototype.toString = function () {
  console.log(this.name);
};

let animal = new Animal("毛毛", 24);
animal.toString();

/* Array中将toString()方法进行了重写 因此数组调用toString()方法不会输出类型 */

/* 使用typeof无法区分Array Object 和 null
   可以使用toString()区分出对象的真正类型
*/

function getDataType(obj) {
    /* 使用这种方式进行调用可以避免子类重写toString()方法后改变其最初的作用 */
    return Object.prototype.toString.call(obj);
}

console.log(getDataType([]));
console.log(getDataType({}));
console.log(getDataType(new Date()));
